package leetcode_700;

/**
 *@author 周杨
 *BinaryNumberWithAlternatingBits_693 判断一个整数是否二进制中有非交替出现的0和1
 *describe:用移位符和与即可 AC 8%
 *2018年10月9日 下午2:41:51
 */
public class BinaryNumberWithAlternatingBits_693 {
	public boolean hasAlternatingBits(int n) {
        int i=1;
        int flag=n&1;//相同为1 不同为0
        while(i<32&&n!=0) {
        	n=n>>i;
        	int temp=n&1;
        	if(temp==flag)
        		return false;
        	flag=temp;
        }
        return true;
    }
	
	/**
	 * describe:用^
	 * 2018年10月9日 下午2:42:35
	*/
	public boolean hasAlternatingBits1(int n) {
	       
        //return ((n&0xAAAA)==n)||((n&0x5555)==n);
        n = n ^ (n>>1);
            return ((n&(n+1))==0);
    }
}
